package com.herench.bs.transfer;

import com.alibaba.fastjson.JSONObject;
import com.herench.bs.utils.HttpClientSupport;
import org.apache.log4j.Logger;

import java.util.Map;
import java.util.TreeMap;

/**
 * 微信消息推送
 *
 * @author liuxiaohui
 * @date 2019/4/29
 */
public class WeiChatSendMsg {
    // Log
    private static final Logger logger = Logger.getLogger(WeiChatSendMsg.class);
    // 消息推送服务
    private static final String weichatUrl = "http://39.106.103.34:8081/notice/entrance/service";
    // 渠道编码（100001：测试用）
    private static final String channelCode = "100001";


    /**
     * 住院预交金支付成功通知: 500201
      * @param wxUserMobile 微信公众号注册手机号
     * @param patientName 患者姓名
     * @param inpNo 住院号
     * @param money 缴费金额
     */
    public void sendMsgDoPrePayments(String wxUserMobile, String patientName, String inpNo, String money) {
        JSONObject jsonObject = new JSONObject();
        // 接口编号
        jsonObject.put("funcode", "500201");
        jsonObject.put("captcha", "token");

        // 拼接入参
        Map<String, String> args = new TreeMap<>();
        // 渠道编码
        args.put("channelCode", channelCode);
        // 手机号
        args.put("phone", wxUserMobile);
        // 患者姓名
        args.put("patName", patientName);
        // 住院号
        args.put("inpNo", inpNo);
        // 预交金
        args.put("money", money);
        // 链接路径
        args.put("url", "");
        // 参数签名值
        args.put("sign", "");

        // 参数转换为JSON对象
        jsonObject.put("args", args);

        // 微信消息推送
        sendWxMsg(jsonObject.toJSONString());
    }

    /**
     * 预约住院取消通知: 500203
     * @param wxUserMobile 微信公众号注册手机号
     * @param patientName 患者姓名
     * @param appointmentTime 预约时间
     */
    public void sendMsgDoCancelAppointInHos(String wxUserMobile, String patientName, String appointmentTime) {
        JSONObject jsonObject = new JSONObject();
        // 接口编号
        jsonObject.put("funcode", "500203");
        jsonObject.put("captcha", "token");

        // 拼接入参
        Map<String, String> args = new TreeMap<>();
        // 渠道编码
        args.put("channelCode", channelCode);

        // 微信公众号注册手机号
        args.put("phone", wxUserMobile);
        // 患者姓名
        args.put("patName", patientName);
        // 预约时间
        args.put("appointmentTime", appointmentTime);

        // 链接路径
        args.put("url", "");
        // 参数签名值
        args.put("sign", "");

        // 参数转换为JSON对象
        jsonObject.put("args", args);

        // 微信消息推送
        sendWxMsg(jsonObject.toJSONString());
    }

    /**
     * 病历打印预约成功通知 : 500204
     * @param wxUserMobile 微信公众号注册手机号
     * @param patientName 患者姓名
     * @param handleTime 处理时间
     */
    public void sendMsgDoAppointMedPrint(String wxUserMobile, String patientName, String handleTime) {
        JSONObject jsonObject = new JSONObject();
        // 接口编号
        jsonObject.put("funcode", "500204");
        jsonObject.put("captcha", "token");

        // 拼接入参
        Map<String, String> args = new TreeMap<>();
        // 渠道编码
        args.put("channelCode", channelCode);

        // 微信公众号注册手机号
        args.put("phone", wxUserMobile);
        // 患者姓名
        args.put("patName", patientName);
        // 处理时间
        args.put("handleTime", handleTime);

        // 链接路径
        args.put("url", "");
        // 参数签名值
        args.put("sign", "");

        // 参数转换为JSON对象
        jsonObject.put("args", args);

        // 微信消息推送
        sendWxMsg(jsonObject.toJSONString());
    }


    /**
     * 病历打印取消预约成功通知: 500205
     * @param wxUserMobile 微信公众号注册手机号
     * @param patientName 患者姓名
     * @param appointmentTime 预约时间
     */
    public void sendMsgDoCancelAppointMedPrint(String wxUserMobile, String patientName, String appointmentTime) {
        JSONObject jsonObject = new JSONObject();
        // 接口编号
        jsonObject.put("funcode", "500205");
        jsonObject.put("captcha", "token");

        // 拼接入参
        Map<String, String> args = new TreeMap<>();
        // 渠道编码
        args.put("channelCode", channelCode);

        // 微信公众号注册手机号
        args.put("phone", wxUserMobile);
        // 患者姓名
        args.put("patName", patientName);
        // 预约时间
        args.put("appointmentTime", appointmentTime);

        // 链接路径
        args.put("url", "");
        // 参数签名值
        args.put("sign", "");

        // 参数转换为JSON对象
        jsonObject.put("args", args);

        // 微信消息推送
        sendWxMsg(jsonObject.toJSONString());
    }


    /**
     * 微信消息推送
     * @param jsonStr 入参
     */
    public void sendWxMsg(String jsonStr) {
        try{
            logger.info("微信消息推送 入参:" + jsonStr);
            String str = HttpClientSupport.doPost(weichatUrl, jsonStr, "utf-8");
            logger.info("微信消息推送 出参:" + str + " ==》此出参的入参：" + jsonStr);
        }catch (Exception e){
            e.printStackTrace();
            logger.info("微信消息推送 出错:" + e.toString() + " ==》此出错的入参：" + jsonStr);
        }
    }
}
